//
//  RSMainTabBarController.swift
//  RSWeibo
//
//  Created by Macx on 16/8/8.
//  Copyright © 2016年 Macx. All rights reserved.
//

import UIKit

class RSMainTabBarController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 设置自定义 tabba
        let rsTabBar = RSTabBar()
        
        // 闭包
        rsTabBar.buttonClosuer = { [weak self] in
        
//            print("闭包调用过来的")
            
            // 模态出发微博控制器
            self!.pushComposeVC()
            
        }
        
        // tabBar 是只读属性, 不能直接赋值, 需要使用 KVC 赋值
//        tabBar = rsTabBar
        setValue(rsTabBar, forKey: "tabBar")

    // 按次序添加子控制器
        addChildViewController(RSHomeController(), name: "首页", image: "tabbar_home")
        addChildViewController(RSMessageController(), name: "消息", image: "tabbar_message_center")
//        addChildViewController(RSHomeController(), name: "", image: "tabbar_home")
        addChildViewController(RSDiscoveryController(), name: "发现", image: "tabbar_discover")
        addChildViewController(RSMineController(), name: "我的", image: "tabbar_profile")
        
    }
    
    private func pushComposeVC(){
        
        // 先创建一个发微博的控制器
        let composeVC = RSComposeViewController()
        
        // 设置成导航控制器的根控制器
        let nav = UINavigationController(rootViewController: composeVC)
        
        // 模态出控制器
        presentViewController(nav, animated: true, completion: nil)
    }


    // 重载 添加子控制器的 方法
    func addChildViewController(childController: UIViewController, name: String, image: String) {
        
        // 设置子控制器的标题跟图片
        childController.title = name
        childController.tabBarItem.image = UIImage(named: image)
        
        //  修改渲染模式
        childController.tabBarItem.selectedImage = UIImage(named: "\(image)_selected")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
        
        // 设置文字颜色, 选中状态下的
        childController.tabBarItem.setTitleTextAttributes(
            [NSForegroundColorAttributeName : UIColor.orangeColor()], forState: .Selected)
        // 设置标题文字大小
        childController.tabBarItem.setTitleTextAttributes(
            [NSFontAttributeName : UIFont.systemFontOfSize(15)], forState: .Normal)
        
        
        // 添加到导航控制器
        let nav = UINavigationController(rootViewController: childController)
        
        // 重载构造方法时, 必须在最后完成父类构造方法
        super.addChildViewController(nav)
        
        
    }
}
